#ifndef ARCNODES_H_
#define ARCNODES_H_
#include"Public.h"
template <typename Type>
class ArcNode {
public:
	ArcNode();
	~ArcNode();

	Status setIndex(int);
	Status setNext(ArcNode<Type> *);
	Status setWeight(Type);

	int getIndex();
	ArcNode<Type> *getNext();
	Type getWeight();

private:
	int m_iIndex;
	ArcNode<Type> *m_pNext;
	Type m_tWeight;
};

template <typename Type>
ArcNode<Type>::ArcNode() :m_iIndex(-1), m_pNext(nullptr),m_tWeight(0) {
}

template <typename Type>
ArcNode<Type>::~ArcNode() {
}

template <typename Type>
Status ArcNode<Type>::setIndex(int index) {
	m_iIndex = index;
	return OK;
}

template <typename Type>
Status ArcNode<Type>::setNext(ArcNode<Type> *next) {
	m_pNext = next;
	return OK;
}

template<typename Type>
inline Status ArcNode<Type>::setWeight(Type weight){
	m_tWeight = weight;
	return OK;
}

template <typename Type>
int ArcNode<Type>::getIndex() {
	return m_iIndex;
}

template <typename Type>
ArcNode<Type> *ArcNode<Type>::getNext() {
	return m_pNext;
}
template<typename Type>
inline Type ArcNode<Type>::getWeight(){
	return m_tWeight;
}
#endif